Coroutine Builders (launch, async)

Mobile App Development - কটলিন (Kotlin) - Coroutines এবং Asynchronous Programming
326

Coroutine Builders (launch, async)

কটলিনে Coroutines ব্যবহার করে অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং করা যায়, যা জাভা থ্রেডিংয়ের তুলনায় বেশি হালকা এবং কার্যকর। Coroutine Builders, যেমন launch এবং async, coroutine তৈরি করার জন্য ব্যবহৃত হয়। নিচে এই দুটি Coroutine Builder এর কার্যকারিতা এবং ব্যবহারের উদাহরণ নিয়ে বিস্তারিত আলোচনা করা হলো।


১. Coroutine Basics

কটলিনে Coroutine হলো একটি লাইটওয়েট থ্রেড যা অ্যাসিঙ্ক্রোনাস অপারেশন এবং ব্যাকগ্রাউন্ড টাস্ক সম্পাদনের জন্য ব্যবহৃত হয়। Coroutine ব্যবহার করে আপনি একটি সময়সীমার মধ্যে অনেক কাজ সম্পন্ন করতে পারেন, এবং এগুলো অন্যান্য থ্রেডের তুলনায় কম মেমরি ব্যবহার করে।

২. launch Coroutine Builder

launch Coroutine Builder একটি নতুন coroutine তৈরি করে এবং এটি একটি Job রিটার্ন করে। এটি সাধারণত এমন কাজের জন্য ব্যবহার করা হয় যেখানে আপনি একটি Coroutine তৈরি করতে চান এবং কিছু করার পরে ফলাফল ফেরত দেওয়ার প্রয়োজন নেই।

উদাহরণ:

import kotlinx.coroutines.*

fun main() = runBlocking {
    launch {
        delay(1000L) // ১ সেকেন্ডের জন্য বিলম্বিত হবে
        println("Coroutine finished!")
    }
    println("Hello,")
}

ব্যাখ্যা:

  • runBlocking একটি coroutine scope তৈরি করে যা মেইন থ্রেড ব্লক করবে যতক্ষণ না এর সমস্ত coroutine সম্পন্ন হয়।
  • launch Coroutine Builder ব্যবহার করে একটি নতুন coroutine তৈরি করা হয়েছে যা ১ সেকেন্ড বিলম্বিত হয়ে "Coroutine finished!" প্রিন্ট করবে।
  • "Hello," প্রিন্ট হবে প্রথমে, কারণ এটি Coroutine এর বাইরে।

৩. async Coroutine Builder

async Coroutine Builder একটি নতুন coroutine তৈরি করে এবং Deferred রিটার্ন করে। এটি সাধারণত তখন ব্যবহার করা হয় যখন আপনি ফলাফল প্রাপ্ত করতে চান। async-এর মাধ্যমে করা কাজটি শেষ হলে আপনি await ব্যবহার করে ফলাফল পেতে পারেন।

উদাহরণ:

import kotlinx.coroutines.*

fun main() = runBlocking {
    val deferredResult = async {
        delay(1000L) // ১ সেকেন্ডের জন্য বিলম্বিত হবে
        42 // ফলস্বরূপ মান
    }

    println("The answer is ${deferredResult.await()}") // আউটপুট: The answer is 42
}

ব্যাখ্যা:

  • এখানে async Coroutine Builder ব্যবহার করে একটি coroutine তৈরি করা হয়েছে যা ১ সেকেন্ড পরে ৪২ ফেরত দেবে।
  • deferredResult.await() ব্যবহার করে coroutine এর কাজ শেষ হওয়ার পর ফলাফল পাওয়া যায়।

৪. launch এবং async এর মধ্যে পার্থক্য

Featureslaunchasync
Return TypeJobDeferred<T>
PurposeFire-and-forget tasksTo get a result
UsageWhen you don't need a resultWhen you need a result

৫. Structured Concurrency

কটলিনের coroutine ব্যবস্থাপনায় Structured Concurrency খুবই গুরুত্বপূর্ণ। এটি নিশ্চিত করে যে সমস্ত coroutine-এর সম্পন্ন হওয়া এবং ব্যবস্থাপনায় একটি পরিষ্কার ও নিরাপদ পদ্ধতি রয়েছে।

উদাহরণ:

import kotlinx.coroutines.*

fun main() = runBlocking {
    // Multiple coroutines within the same scope
    launch {
        delay(500L)
        println("Task from launch")
    }
    
    async {
        delay(1000L)
        println("Task from async")
    }.await()
    
    println("Main coroutine finished")
}

ব্যাখ্যা:

  • এখানে launch এবং async উভয়ই একই runBlocking scope এর ভেতরে কাজ করছে। এটি নিশ্চিত করে যে মেইন coroutine শেষ না হওয়া পর্যন্ত সকল coroutine সম্পন্ন হবে।

উপসংহার

কটলিনের Coroutine Builders, যেমন launch এবং async, অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংয়ের জন্য একটি শক্তিশালী উপায় প্রদান করে। launch ব্যবহার করে আপনি সহজে Coroutine তৈরি করতে পারেন যখন ফলাফল প্রয়োজন হয় না, আর async ব্যবহার করে আপনি ফলাফল প্রাপ্ত করতে পারেন। এই ফিচারগুলো প্রোগ্রামিংকে আরও কার্যকর এবং সমন্বিত করে তোলে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...